// 导入登录接口
import { userAccountLogin } from '@/api/user'
// 用户状态=》登录人信息
export default {
  namespaced: true,
  // state定义可以写成函数=》和vue中data的定义类似=》避免引用（和组件中定义到data数据都是响应式）
  state: () => ({
    // 存储当前登录人信息的变量
    profile: {
      id: '',
      avatar: '',
      nickname: '',
      account: '',
      mobile: '',
      token: ''
    }
  }),
  mutations: {
    // 存储登录人信息方法
    updateProfile (state, payload) {
      state.profile = payload
    },
    // 删除登录人信息方法
    delProfile (state) {
      state.profile = {}
    }
    // testToken (state, payload) {
    //   state.profile.token = payload
    // }
  },
  actions: {
    // 调用登录接口
    /**
     *
     * @param {*} param0
     * @param {*} payload  { account, password }
     */
    async loginAction ({ commit }, payload) {
      const { result } = await userAccountLogin(payload)
      console.log('login:', result)
      commit('updateProfile', result)
    },
    // 退出登录
    logoutAction ({ commit }) {
      /**
       * 退出思路：
       * 1. 调用接口（如果有）
       * 2. 清除本地上次登录人数据
       * 3. 跳到登录页（页面/js中跳转）
       */
      commit('delProfile')
      // 调用其它模块的mucations方法：需要在commit第三个参数，加上{ root: true }
      commit('cart/setList', [], { root: true })
    }
  }
}
